$(function () {
    //需求1: 初始化文章分类列表
    //因为后面还要用,所以封装成函数
    initArtCateList()
    //封装
    function initArtCateList() {
        axios({
            method: 'GET',
            url: '/my/article/cates',
        }).then(function (res) {
            // console.log(res.data)
            if (res.data.status !== 0) {
                return layer.msg(res.data.message)
            }
            //成功后渲染
            let arr = []
            //定义一个变量,做序号,循环一次自增 1
            let index = 0
            res.data.data.forEach(ele => {
                index++
                arr.push(`
                <tr>
                <td>${index}</td>
                <td>${ele.name}</td>
                <td>${ele.alias}</td>
                <td>
                    <button data-id="${ele.Id}" class="btn-edit layui-btn layui-btn layui-btn-xs">编辑</button>
                    <button data-id="${ele.Id}"  class="btn-delete layui-btn layui-btn layui-btn-xs layui-btn-danger">删除</button>
                </td>
              </tr>

                `)
            });
            // 循环完毕之后在赋值
            $('tbody').empty().html(arr.join(''))
        })
    }
     
    //需求2: 点击添加,显示对话框
    //定义添加分类的对话框的索引值
    let indexAdd = null
    $('#btnAdd').on('click', function () {
        //给出弹窗
     let indexAdd = layer.open({
            type: 1,
            title: '添加文章分类',
            area: ['500px', '300px'],
            content: `
            <form class="layui-form" id="formAdd">
           
            <!-- 1 -->
            <div class="layui-form-item">
              <label class="layui-form-label">分类名称</label>
              <div class="layui-input-block">
                <input type="text" name="name" required  lay-verify="required" placeholder="请输入分类名称" autocomplete="off" class="layui-input">
              </div>
            </div>
            <!-- 2 -->
            <div class="layui-form-item">
            <label class="layui-form-label">分类别名</label>
            <div class="layui-input-block">
              <input type="text" name="alias" required  lay-verify="required" placeholder="请输入分类别名" autocomplete="off" class="layui-input">
            </div>
          </div>
          <!-- 3 -->
          <div class="layui-form-item">
         <div class="layui-input-block">
         <button class="layui-btn" lay-submit lay-filter="formDemo">确认添加</button>
         <button type="reset" class="layui-btn layui-btn-primary">重置</button>
        </div>
         </div>
        </form>
            `
        })
    })

    //需求 3 : 添加文章分类 - 事件委托
    $('body').on('submit','#formAdd',function(e){
     e.preventDefault()
     axios({
         method:'POST',
         url:'/my/article/addcates',
         data: $(this).serialize()
     }).then(function(res){
           //console.log(res.data); 
           //TODO: 判断,成功提示,关闭对话框,刷新页面
           if(res.data.status !==0){
            return layer.msg(res.data.message)
           } 
           //成功提示
           layer.msg ('添加文章分类成功^^')
           //关闭对话框dd
           layer.close (indexAdd)
           //刷新页面
           initArtCateList()
     })
    })

    //需求4 : 点击按钮 ,展示对话框 - 事件委托
    let indexEdit = null
    let form = layui.form
    $('tbody').on('click','.btn-edit',function(){
        let indexEdit = layer.open({
            type: 1,
            title: '修改文章分类',
            area: ['500px', '300px'],
            content: `
            <form class="layui-form" lay-filter="formEdit" id="formEdit">
            <input type="hidden" name="Id">
            <!-- 1 -->
            <div class="layui-form-item">
              <label class="layui-form-label">分类名称</label>
              <div class="layui-input-block">
                <input type="text" name="name" required  lay-verify="required" placeholder="请输入分类名称" autocomplete="off" class="layui-input">
              </div>
            </div>
            <!-- 2 -->
            <div class="layui-form-item">
            <label class="layui-form-label">分类别名</label>
            <div class="layui-input-block">
              <input type="text" name="alias" required  lay-verify="required" placeholder="请输入分类别名" autocomplete="off" class="layui-input">
            </div>
          </div>
          <!-- 3 -->
          <div class="layui-form-item">
         <div class="layui-input-block">
         <button class="layui-btn" lay-submit lay-filter="formDemo">修改</button>
         <button type="reset" class="layui-btn layui-btn-primary">重置</button>
        </div>
         </div>
        </form>
            `
        })
        //需求5 : 展示当前的文章分类信息
   let id = $(this).attr('data-id')
   axios({
       method:'GET',
       //此处id 为动态参数,可以改变的
       //必须省略:前面的 / 必须不能省略
       url:'/my/article/cates/' + id,
   }).then(function(res){
       console.log(res.data);
     if(res.data.status !==0){
      return layer.msg(res.data.message)
     }
     //展示
    form.val('formEdit',res.data.data)
    
   })
    })
      //需求5 :修改文章分类- 事件委托 - 完全赋值的添加文章分类,修改内部数据
     $('body').on('submit','#formEdit',function(e){
     e.preventDefault()
     axios({
         method:'POST',
         url:'/my/article/updatecate',
         data: $(this).serialize()
     }).then(function(res){
           //console.log(res.data); 
           //TODO: 判断,成功提示,关闭对话框,刷新页面
           if(res.data.status !==0){
            return layer.msg(res.data.message)
           } 
           //成功提示
           layer.msg ('修改文章分类成功^^')
           //关闭对话框dd
           layer.close (indexEdit)
           //刷新页面
           initArtCateList()
     })
    }) 

    //需求6: 删除功能 - 事件委托! -可以参考修改
    $('tbody').on('click','.btn-delete',function(){
        //获取id 要写到弹窗之外
        let id = $(this).attr('data-id')
        //弹窗
        layer.confirm('是的确认删除?',{
            icon:3,
            title: '提示'
        },function(index){
            // 发送ajax
            axios({
                method:'GET',
                //:一定要删除,/一定要保留
                url:'/my/article/deletecate/'+ id,
            }).then(function(res){
                //判断
                if(res.data.status !==0){
                    return layer.msg(res.data.message)
                }
                //成功提示
                layer.msg('删除文章分类成功^^')
                //重新渲染页面
                initArtCateList()
            })
            // 在axios处理函数外面关闭对话框
            layer.close(index)
        })
    })
})
